package com.cssl.service;

import com.cssl.domain.*;
import com.cssl.domain.dto.DtsBrandDto;
import com.cssl.domain.dto.GoodsDto;
import com.cssl.domain.dto.GoodsSearchDto;
import com.cssl.domain.dto.PageDto;
import com.cssl.util.Result;
import com.github.pagehelper.Page;

import java.util.List;
import java.util.Map;

public interface DtsGoodsService {
    Page findFirstPageGoods(com.cssl.domain.Page pages);

    List<DtsGoods> getTwoHotGoods();

    Map getGoodsList(GoodsDto goodsDto);

    Result getTotalGoodsCount();

    List<DtsGoods> getNewGoods();

    List<DtsGoods> getHotGoods();


    /**
     * 公告
     *
     * @return
     */
    List<DtsAd> findNoticeList();

    Result getNotice(Integer id);

    Result getGoodsInfoById(int parseInt);


    Result searchHelp();

    Result searchGoods(GoodsSearchDto searchDto);

    Integer deleteHistory(Integer loginIdAsInt);

    Result getGoodsSpecifications(Map map);

    Result getRelevantData(Map map);

    Result getGoodsByBrandId(DtsBrandDto map);

    Result getHotAndNewGoods(PageDto dto);

    Result checkedSpecPrice(Map map);

    /**
     * 获取商品最后排序
     *
     * @return
     */
    Integer getGoodsLatSort();

    /**
     * 新增新商品
     *
     * @param map
     * @return
     */
    Integer insertGoods(Map map);

    /**
     * 将新商品编号同步成商品ID
     *
     * @return
     */
    Integer updateGoodsSn();

    /**
     * 获取新商品编号
     *
     * @return
     */
    Integer getNewGoodsSn();

    /**
     * 新增新商品属性
     *
     * @param map
     * @return
     */
    Integer insertGoodsAttribute(Map map);

    /**
     * 新增新商品规格
     *
     * @param map
     * @return
     */
    Integer insertGoodsSpecification(Map map);

    /**
     * 新增新商品货品
     *
     * @param map
     * @return
     */
    Integer insertGoodsProduct(Map map);

    Result getGoodsRelated(DtsGoods goods);

    /**
     * 根据商品ID获取商品信息
     *
     * @param goodsId
     * @return
     */
    DtsGoods getDtsGoodsById(Integer goodsId);

    /**
     * 根据商品ID获取商品属性
     *
     * @param goodsId
     * @return
     */
    List<DtsGoodsAttribute> getGoodsAttributeByGoodsId(Integer goodsId);

    /**
     * 根据商品ID获取商品规格
     *
     * @param goodsId
     * @return
     */
    List<DtsGoodsSpecification> getGoodsSpecificationByGoodsId(Integer goodsId);

    /**
     * 根据商品ID获取商品货品
     *
     * @param goodsId
     * @return
     */
    List<DtsGoodsProduct> getGoodsProductByGoodsId(Integer goodsId);

    /**
     * 根据商品ID删除商品属性
     *
     * @param goodsId
     * @return
     */
    Integer deleteGoodsAttributeByGoodsId(Integer goodsId);

    /**
     * 根据商品ID删除商品规格
     *
     * @param goodsId
     * @return
     */
    Integer deleteGoodsSpecificationByGoodsId(Integer goodsId);

    /**
     * 根据商品ID删除商品货品
     *
     * @param goodsId
     * @return
     */
    Integer deleteGoodsProductByGoodsId(Integer goodsId);

    /**
     * 更新商品信息
     *
     * @param goods
     * @return
     */
    Integer updateGoods(DtsGoods goods);

    /**
     * 删除商品
     *
     * @param goodsId
     * @return
     */
    Integer deleteGoods(Integer goodsId);

    /**
     * 判断商品是否在订单中
     * @param goodsId
     * @return
     */
    Integer goodsInOrder(Integer goodsId);

    Result groupOnShow(Integer goods);
}
